廃止予定のS3署名バージョン2によるアクセスを調査する方法まとめ
西澤です。2019/06/24廃止予定のS3署名バージョン2の対応について、どこから手をつけてよいかわからないというお問い合わせを多数いただいています。署名バージョン2廃止に備えて、まずは現状の把握が必要となりますので、今回はその調査方法についてまとめてみます。
いったい何のことやらという方は、まずこちらのエントリーをお読みください。
S3署名バージョン2でのアクセスを調査する方法
現状、大きく2つの調査方法が提供されています。いずれのログもデフォルト設定では「出力されない」点にご注意ください。明示的に有効化する必要があります。
- 1) CloudTrailのS3オブジェクトレベルログを調査する
- 2019年2月頭にS3オブジェクトレベルログの中に、署名バージョンの情報が追加されるようになりました。
- AWS Developer Forums: AWS CloudTrail for Amazon S3 adds new fields for enhanced security auditing
- S3オブジェクトレベルログは、S3バケット単位で有効にすることができます。
- AWS CloudTrail データイベントで S3 バケットのオブジェクトレベルのログ記録を有効にする方法 - Amazon Simple Storage Service
- AWS CloudTrail を使用して Amazon S3 API コールのログを記録する - Amazon Simple Storage Service
- 2) S3サーバアクセスログを調査する
- 2019年3月末には、S3サーバアクセスログにも、署名バージョンの情報が追加されるようになりました。
- S3のサーバアクセスログで署名バージョンの確認ができるようになりました | DevelopersIO
- S3サーバアクセスログも、S3バケット単位で有効にすることができます。
- S3 バケットのサーバーアクセスのログ記録を有効にする方法 - Amazon Simple Storage Service
現時点でいずれのログも有効化していないお客様であれば、まず、1)のCloudTrailのS3オブジェクトレベルログを有効化して調査することをおすすめしたいと思います。CloudTrailコンソール画面からであれば、全てのS3バケットに対してまとめて有効化することもできますし、こちらの方が単純に情報量が多い為、調査も進めやすいと考えています。
1) CloudTrailのS3オブジェクトレベルログを調査する
まずは、ファーストオプションであるS3オブジェクトレベルログを使った調査の進め方を確認します。
S3オブジェクトレベルログ有効化に伴う課金
S3オブジェクトレベルログを有効化にすると、下記の料金が追加で加算されます。
- イベントあたり
- 100,000 件のイベントあたり $0.10
- ログ量
- $0.025/GB(※東京リージョンの標準ストレージの場合)
ほとんどのお客様では課金はさほど気にならない額に収まるケースが多いとは思うのですが、S3をヘビーに利用していて、リクエスト数が極端に多いことが想定されるお客様のみ、有効化に際してご注意ください。Cost Usage Reportを有効にしている環境であれば、APN1-Requests-Tier1、APN1-Requests-Tier2などの合計からイベント数を見積もり、追加料金の試算をすることが可能です。
S3オブジェクトレベルログを有効化した後の調査方法
まずは、署名バージョン2のアクセス量全体を確認するのが先決になるかと思います。CloudTrailログはjsonで出力される為、目で確認するのは困難です。最初の調査としては、Athenaによりクエリする方法をオススメします。
こちらで署名バージョン2のアクセスの主要な要因を確認いただき、まずは1つ1つ対策していきます。ある程度署名バージョン2のアクセスを潰せた段階で、下記エントリーのように、CloudWatch Eventを利用した通知の仕組みを用意して、最終チェックとすると良さそうです。
2) S3サーバアクセスログを調査する
元々、S3サーバアクセスログを有効にしているようなケースでは、CloudTrailではなく、こちらをベースに調査するのも良いと思います。
S3サーバアクセスログ有効化に伴う課金
こちらはログを保管する分の料金のみを考慮すればOKです。
- ログ量
- $0.025/GB(※東京リージョンの標準ストレージの場合)
S3サーバアクセスログを有効化した後の調査方法
S3サーバアクセスログはフラットに配置されるスペース区切りのテキストファイルですので、いろいろな方法で調査は可能かと思います。
こちらもAthenaでクエリすることも良いと思いますが、こちらはフラットに配置される為、長く運用されている環境ではスキャン範囲が大きくなる可能性があります点にも、ご注意ください。
まとめ
継ぎ接ぎしただけで、あまり上手くまとめられなかったという印象もあるのですが、どこから手をつけて良いかわからないという方の手助けになるような情報がまとめられればと思い、書いてみました。今回紹介していないエントリーも含めて、ぜひご確認いただければと思います。
どこかの誰かのお役に立てば嬉しいです。